﻿using Aspose.Words;
using Aspose.Words.Drawing;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Data;
using WidgetsDesign.API.DataBase;
using WidgetsDesign.API.Models;

namespace WidgetsDesign.API.Services
{
    /// <summary>
    /// 
    /// </summary>
    public class zyxk_GroundBreakRepository : Izyxk_GroundBreakRepository

    {
        private readonly AppDbContext _context;
        public zyxk_GroundBreakRepository(AppDbContext content)
        {
            _context = content;
        }
        /// <summary>
        /// 创建动土作业许可证
        /// </summary>
        /// <param name="GroundBreak"></param>
        /// <returns></returns>
        public void CreateGroundBreak(zyxk_groundbreakModel GroundBreak)
        {
            _context.zyxk_groundbreak.Add(GroundBreak);
        }
        /// <summary>
        /// 添加安全措施
        /// </summary>
        /// <param name="GroundBreak"></param>
        public void CreateGroundBreakRisk(zyxk_groundbreakModel GroundBreak)
        {
            var query = from d in _context.zyxk_groundbreak
                        where d.id == GroundBreak.id
                        select d;

            var item = query.FirstOrDefault();
            if (item != null)
            {
                item.safe = GroundBreak.safe;
                item.preparedman = GroundBreak.preparedman;
            }
        }
        public void CreateGroundBreakSign(zyxk_groundbreakModel GroundBreak)
        {
            var query = from d in _context.zyxk_groundbreak
                        where d.id == GroundBreak.id
                        select d;
            var item = query.FirstOrDefault();
            if (item != null)
            {
                item.signatureman = GroundBreak.signatureman;
                item.operatorApplication = GroundBreak.operatorApplication;
                item.jobMonitoring = GroundBreak.jobMonitoring;
                item.ratify = GroundBreak.ratify;
                item.stakeholder = GroundBreak.stakeholder;
            }
        }

        /// <summary>
        /// 保存
        /// </summary>
        /// <returns></returns>
        public async Task<bool> SaveAsync()
        {
            return (await _context.SaveChangesAsync() >= 0);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="GroundBreak"></param>
        /// <param name="templatePath"></param>
        /// <param name="outputPath"></param>

        public string zyxk_groundbreakTopdf(string inputFilePath, string outputFilePath, zyxk_groundbreakModel GroundBreak)
        {
            zyxk_Model model = new zyxk_Model();
            #region key
            new Aspose.Words.License().SetLicense(new MemoryStream(Convert.FromBase64String("PExpY2Vuc2U+CiAgPERhdGE+CiAgICA8TGljZW5zZWRUbz5TdXpob3UgQXVuYm94IFNvZnR3YXJlIENvLiwgTHRkLjwvTGljZW5zZWRUbz4KICAgIDxFbWFpbFRvPnNhbGVzQGF1bnRlYy5jb208L0VtYWlsVG8+CiAgICA8TGljZW5zZVR5cGU+RGV2ZWxvcGVyIE9FTTwvTGljZW5zZVR5cGU+CiAgICA8TGljZW5zZU5vdGU+TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1pdGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU+CiAgICA8T3JkZXJJRD4yMDA2MDIwMTI2MzM8L09yZGVySUQ+CiAgICA8VXNlcklEPjEzNDk3NjAwNjwvVXNlcklEPgogICAgPE9FTT5UaGlzIGlzIGEgcmVkaXN0cmlidXRhYmxlIGxpY2Vuc2U8L09FTT4KICAgIDxQcm9kdWN0cz4KICAgICAgPFByb2R1Y3Q+QXNwb3NlLlRvdGFsIGZvciAuTkVUPC9Qcm9kdWN0PgogICAgPC9Qcm9kdWN0cz4KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl0aW9uVHlwZT4KICAgIDxTZXJpYWxOdW1iZXI+OTM2ZTVmZDEtODY2Mi00YWJmLTk1YmQtYzhkYzBmNTNhZmE2PC9TZXJpYWxOdW1iZXI+CiAgICA8U3Vic2NyaXB0aW9uRXhwaXJ5PjIwMjEwODI3PC9TdWJzY3JpcHRpb25FeHBpcnk+CiAgICA8TGljZW5zZVZlcnNpb24+My4wPC9MaWNlbnNlVmVyc2lvbj4KICAgIDxMaWNlbnNlSW5zdHJ1Y3Rpb25zPmh0dHBzOi8vcHVyY2hhc2UuYXNwb3NlLmNvbS9wb2xpY2llcy91c2UtbGljZW5zZTwvTGljZW5zZUluc3RydWN0aW9ucz4KICA8L0RhdGE+CiAgPFNpZ25hdHVyZT5wSkpjQndRdnYxV1NxZ1kyOHFJYUFKSysvTFFVWWRrQ2x5THE2RUNLU0xDQ3dMNkEwMkJFTnh5L3JzQ1V3UExXbjV2bTl0TDRQRXE1aFAzY2s0WnhEejFiK1JIWTBuQkh1SEhBY01TL1BSeEJES0NGbWg1QVFZRTlrT0FxSzM5NVBSWmJRSGowOUNGTElVUzBMdnRmVkp5cUhjblJvU3dPQnVqT1oyeDc4WFE9PC9TaWduYXR1cmU+CjwvTGljZW5zZT4=")));

            #endregion
            int index = 0;
            Aspose.Words.Document doc = new Aspose.Words.Document(inputFilePath);
            DocumentBuilder builder = new DocumentBuilder(doc);
            // 查找书签  
            List<string> bookmarkNames = new List<string>();

            // 遍历文档中的所有书签  
            foreach (Aspose.Words.Bookmark bookmark in doc.Range.Bookmarks)
            {
                bookmarkNames.Add(bookmark.Name);
            }

            foreach (string bookmarkName in bookmarkNames)
            {
                #region 表格前部分

                string bookmarkNamel = bookmarkName.Substring(1, 1);
                if (GroundBreak.risk != null && bookmarkNamel == "K")
                {
                    if (bookmarkName == "【Key0】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.noNumber); }
                    if (bookmarkName == "【Key1】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.applicantCompany); }
                    if (bookmarkName == "【Key2】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.applyTime?.ToString("yyyy年MM月dd日")); }
                    if (bookmarkName == "【Key3】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.homeworkAreaManagementUnit); }
                    if (bookmarkName == "【Key4】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.territorySupervisor); }
                    if (bookmarkName == "【Key5】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.proposer); }
                    if (bookmarkName == "【Key6】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.guardian); }
                    if (bookmarkName == "【Key7】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.workLocation); }
                    if (bookmarkName == "【Key8】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.jobContent); }
                    if (bookmarkName == "【Key9】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.operatorman); }
                    if (bookmarkName == "【Key10】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.othernumber); }

                    if (bookmarkName == "【Key11是】" && GroundBreak.isplan == "是") { builder.MoveToBookmark(bookmarkName); builder.Write('\u2713'.ToString()); }

                    if (bookmarkName == "【Key11否】" && GroundBreak.isplan == "否") { builder.MoveToBookmark(bookmarkName); builder.Write('\u2713'.ToString()); }
                    if (bookmarkName == "【Key12】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.starttime?.ToString("yyyy年MM月dd日")); }
                    if (bookmarkName == "【Key13】") { builder.MoveToBookmark(bookmarkName); builder.Write(GroundBreak.endtime?.ToString("yyyy年MM月dd日")); }
                }
                #endregion
                #region 存在的风险
                Dictionary<string, string> riskToBookmarkMap = new Dictionary<string, string>
    {
        { "爆炸", "【safe1】" },
        { "火灾", "【safe2】" },
        { "灼伤", "【safe3】" },
        { "烫伤", "【safe4】" },
        //没有4
            { "机械伤害", "【safe5】" },
              { "中毒", "【safe6】" },
              { "辐射", "【safe7】" },
              { "触电", "【safe8】" },
              { "泄漏", "【safe9】" },
                { "窒息", "【safe10】" },
              { "坠落", "【safe11】" },
              { "落物", "【safe12】" },
              { "掩埋", "【safe13】" },
              { "物体打击", "【safe14】" },
                { "噪声", "【safe15】" },
                { "坍塌", "【safe16】" },
                { "淹溺", "【safe17】" },
              { "其他", "【safe18】" }
    };
                if (GroundBreak.risk != null && bookmarkNamel == "s")
                {
                    JArray array = JArray.Parse(GroundBreak.risk);

                    // 遍历数组中的每个元素  
                    foreach (JToken token in array)
                    {
                        string riskName = token.ToString().Replace("\"", "");
                        // 获取当前风险名称  
                       
                        // 检查风险是否在字典中  
                        if (riskToBookmarkMap.ContainsKey(riskName))
                        {
                            if (riskToBookmarkMap[riskName] == bookmarkName)
                            { // 移动到书签并写入复选标记  
                                builder.MoveToBookmark(bookmarkName);
                                builder.Write('\u2713'.ToString());
                            }


                        }
                        else if (bookmarkName == "【safe18】")
                        {
                            builder.MoveToBookmark(bookmarkName);
                            builder.Write('\u2611'.ToString() + riskName);
                        }
                    }
                }
                #endregion
                #region 安全措施

                if (GroundBreak.safe != null && bookmarkNamel == "m")
                {

                    int number = int.Parse(bookmarkName.Replace("mer", "").Replace("【", "").Replace("】", ""));

                    if (number % 2 == 1)
                    {

                        List<zyxk_Model.SafeObject> safeDataList = JsonConvert.DeserializeObject<List<zyxk_Model.SafeObject>>(GroundBreak.safe);
                        if ("【mer37】" == bookmarkName)
                        {
                            {
                                builder.MoveToBookmark(bookmarkName);
                                builder.Write(safeDataList[17].safeMeasures);
                            }

                        }
                        

                        if (safeDataList != null && safeDataList.Count > 0 && number != 37)
                        {
                            //第一个措施有两个标签【mer1】【mer2】
                            if ("【mer" + number + "】" == bookmarkName && safeDataList[index].isInvolved == 1)
                            {

                                builder.MoveToBookmark(bookmarkName);
                                builder.Write('\u2713'.ToString());
                                if (safeDataList[index].confirmPerson != null)
                                {
                                    int photo = int.Parse(bookmarkName.Replace("mer", "").Replace("【", "").Replace("】", "")) + 1;
                                    // 将Base64字符串解码为字节数组  
                                    if (!string.IsNullOrEmpty(safeDataList[index].confirmPerson))
                                    {
                                        byte[] imageBytes = Convert.FromBase64String(safeDataList[index].confirmPerson.Replace("data:image/png;base64,", ""));
                                        toImage1(builder, imageBytes, "【mer" + photo + "】");
                                    }
                                }

                            }
                            if ("【mer" + number + "】" == bookmarkName && safeDataList[index].isInvolved == 2)
                            {
                                {
                                    builder.MoveToBookmark(bookmarkName);
                                    builder.Write('\u2718'.ToString());
                                }
                                if (string.IsNullOrEmpty(safeDataList[index].confirmPerson))
                                {
                                    int photo = int.Parse(bookmarkName.Replace("mer", "").Replace("【", "").Replace("】", "")) + 1;
                                    string newcuo = "";
                                    newcuo = "【mer" + photo + "】";
                                    builder.MoveToBookmark(newcuo);
                                    builder.Write('\u00a0'.ToString());

                                }

                            }
                            if ("【mer" + number + "】" == bookmarkName && safeDataList[index].isInvolved == 3)
                            {
                                {
                                    builder.MoveToBookmark(bookmarkName);
                                    builder.Write('\uff0f'.ToString());
                                }
                                if (safeDataList[index].confirmPerson != null)
                                {
                                    int photo = int.Parse(bookmarkName.Replace("mer", "").Replace("【", "").Replace("】", "")) + 1;
                                    string newxie = "";
                                    newxie = "【mer" + photo + "】";
                                    builder.MoveToBookmark(newxie);
                                    builder.Write('\u002f'.ToString());
                                }
                            }
                            index = index + 1;
                        }
                    }

                }
                #endregion
                #region 最后半部分
                if (bookmarkNamel == "l" && GroundBreak.signatureman != null)
                {

                    zyxk_Model.SafemanObject safeDataList = JsonConvert.DeserializeObject<zyxk_Model.SafemanObject>(GroundBreak.signatureman);

                    if (safeDataList != null && (!string.IsNullOrEmpty(safeDataList.aqjsjdr)))
                    {
                        string base64pho = "";
                        // 将Base64字符串解码为字节数组  
                        if (bookmarkName == "【last1】")
                        {
                            base64pho = safeDataList.aqjsjdr.Replace("data:image/png;base64,", "");
                        }
                        else
                        {
                            base64pho = safeDataList.jsjdr.Replace("data:image/png;base64,", "");
                        }
                        if (!string.IsNullOrEmpty(base64pho))
                        {
                            byte[] imageBytes = Convert.FromBase64String(base64pho);
                            toImage1(builder, imageBytes, bookmarkName);
                        }
                    }


                }
                if (GroundBreak.operatorApplication != null && bookmarkNamel == "2")
                {

                    zyxk_Model.operatorApplication safeDataList = JsonConvert.DeserializeObject<zyxk_Model.operatorApplication>(GroundBreak.operatorApplication);
                    if (safeDataList != null)
                    {
                        if (bookmarkName == "【2last1】" || bookmarkName == "【2last2】" || bookmarkName == "【2last3】")

                        {
                            string base64pho = "";
                            if (bookmarkName == "【2last1】" && !string.IsNullOrEmpty(safeDataList.zysqr))
                            {
                                // 将Base64字符串解码为字节数组  
                                base64pho = safeDataList.zysqr.Replace("data:image/png;base64,", "");
                            }
                            if (bookmarkName == "【2last2】" && !string.IsNullOrEmpty(safeDataList.zyr))
                            {
                                // 将Base64字符串解码为字节数组  
                                base64pho = safeDataList.zyr.Replace("data:image/png;base64,", "");
                            }


                            if (!string.IsNullOrEmpty(base64pho))
                            {
                                byte[] imageBytes = Convert.FromBase64String(base64pho);
                                toImage(builder, imageBytes, bookmarkName);
                            }

                        }
                        if (bookmarkName == "【2last4】" || bookmarkName == "【2last3】")
                        {builder.MoveToBookmark(bookmarkName);
                            if (bookmarkName == "【2last3】") { builder.Write(safeDataList.zyfsqTime?.ToString("yyyy年MM月dd日 HH时mm分") ?? ""); }
                            else { builder.Write(safeDataList.zyrTime?.ToString("yyyy年MM月dd日 HH时mm分") ?? ""); }
                            
                        }
                    }


                }
                if (GroundBreak.jobMonitoring != null && bookmarkNamel == "3")
                {

                    zyxk_Model.JobMonitoring safeDataList = JsonConvert.DeserializeObject<zyxk_Model.JobMonitoring>(GroundBreak.jobMonitoring);
                    if (safeDataList != null)
                    {
                        if (bookmarkName == "【3last1】" || bookmarkName == "【3last2】")

                        {
                            string base64pho = "";
                            if (bookmarkName == "【3last1】" && !string.IsNullOrEmpty(safeDataList.jhr))
                            {

                                // 将Base64字符串解码为字节数组  
                                base64pho = safeDataList.jhr.Replace("data:image/png;base64,", "");
                            }
                            if (bookmarkName == "【3last2】" && !string.IsNullOrEmpty(safeDataList.sdjd))
                            {
                                // 将Base64字符串解码为字节数组  
                                base64pho = safeDataList.sdjd.Replace("data:image/png;base64,", "");
                            }
                            if (!string.IsNullOrEmpty(base64pho))
                            {
                                byte[] imageBytes = Convert.FromBase64String(base64pho);
                                toImage(builder, imageBytes, bookmarkName);
                            }
                        }
                        if (bookmarkName == "【3last3】")
                        {
                            builder.MoveToBookmark(bookmarkName);
                            builder.Write(safeDataList.jhrTime?.ToString("yyyy年MM月dd日 HH时mm分") ?? "");
                        }
                        if (bookmarkName == "【3last4】")
                        {
                            builder.MoveToBookmark(bookmarkName);
                            builder.Write(safeDataList.sdjdTime?.ToString("yyyy年MM月dd日 HH时mm分") ?? "");
                        }


                    }


                }
                if (GroundBreak.ratify != null && bookmarkNamel == "4")
                {

                    zyxk_Model.Ratify safeDataList = JsonConvert.DeserializeObject<zyxk_Model.Ratify>(GroundBreak.ratify);
                    if (safeDataList != null)
                    {
                        if (bookmarkName == "【4last1】" && !string.IsNullOrEmpty(safeDataList.zypzr))

                        {
                            string base64pho = "";
                            // 将Base64字符串解码为字节数组  
                            base64pho = safeDataList.zypzr.Replace("data:image/png;base64,", "");

                            byte[] imageBytes = Convert.FromBase64String(base64pho);
                            toImage(builder, imageBytes, bookmarkName);
                        }

                        if (bookmarkName == "【4last2】")
                        {
                            builder.MoveToBookmark(bookmarkName);
                            builder.Write(safeDataList.zypzrTime?.ToString("yyyy年MM月dd日 HH时mm分") ?? "");
                        }
                    }


                }
                if (GroundBreak.stakeholder != null && bookmarkNamel == "5")
                {

                    zyxk_Model.Stakeholder safeDataList = JsonConvert.DeserializeObject<zyxk_Model.Stakeholder>(GroundBreak.stakeholder);
                    if (safeDataList != null)
                    {
                        if (bookmarkName == "【5last1】" || bookmarkName == "【5last2】")

                        {
                            string base64pho = "";
                            if (bookmarkName == "【5last1】" && !string.IsNullOrEmpty(safeDataList.dw))
                            {

                                // 将Base64字符串解码为字节数组  
                                base64pho = safeDataList.dw.Replace("data:image/png;base64,", "");
                            }
                            if (bookmarkName == "【5last2】" && !string.IsNullOrEmpty(safeDataList.qrr))
                            {
                                // 将Base64字符串解码为字节数组  
                                base64pho = safeDataList.qrr.Replace("data:image/png;base64,", "");
                            }
                            if (!string.IsNullOrEmpty(base64pho))
                            {
                                byte[] imageBytes = Convert.FromBase64String(base64pho);
                                toImage(builder, imageBytes, bookmarkName);
                            }

                        }
                        if (bookmarkName == "【5last3】")
                        {
                            builder.MoveToBookmark(bookmarkName);
                            builder.Write(safeDataList.xgfTime?.ToString("yyyy年MM月dd日 HH时mm分") ?? "");
                        }


                    }



                }
                if (GroundBreak.preparedman != null && bookmarkNamel == "7" && !string.IsNullOrEmpty(GroundBreak.preparedman))
                {
                    string base64pho = "";
                    // 将Base64字符串解码为字节数组  
                    base64pho = GroundBreak.preparedman.Replace("data:image/png;base64,", "");
                    byte[] imageBytes = Convert.FromBase64String(base64pho);
                    toImage(builder, imageBytes, bookmarkName);
                }
                if (GroundBreak.CancelorClose != null && bookmarkNamel == "q")
                {

                    zyxk_Model.CancelorClose safeDataList = JsonConvert.DeserializeObject<zyxk_Model.CancelorClose>(GroundBreak.CancelorClose);
                    if (safeDataList != null)
                    {
                        if (bookmarkName == "【quxiao4】" || bookmarkName == "【quxiao5】")

                        {
                            string base64pho = "";
                            if (bookmarkName == "【quxiao4】" && !string.IsNullOrEmpty(safeDataList.sqr))
                            {

                                // 将Base64字符串解码为字节数组  
                                base64pho = safeDataList.sqr.Replace("data:image/png;base64,", "");
                            }
                            if (bookmarkName == "【quxiao5】" && !string.IsNullOrEmpty(safeDataList.pzr))
                            {
                                // 将Base64字符串解码为字节数组  
                                base64pho = safeDataList.pzr.Replace("data:image/png;base64,", "");
                            }
                            if (!string.IsNullOrEmpty(base64pho))
                            {
                                byte[] imageBytes = Convert.FromBase64String(base64pho);
                                toImage(builder, imageBytes, bookmarkName);
                            }
                        }
                        if (bookmarkName == "【quxiao1】" && safeDataList.endtype == "1")
                        {
                            builder.MoveToBookmark(bookmarkName);
                            builder.Write('\u2713'.ToString());
                        }
                        if (bookmarkName == "【quxiao2】" && safeDataList.endtype == "2")
                        {
                            builder.MoveToBookmark(bookmarkName);
                            builder.Write('\u2713'.ToString());
                        }
                        if (bookmarkName == "【quxiao3】" && safeDataList.endtype == "3")
                        {
                            builder.MoveToBookmark(bookmarkName);
                            builder.Write('\u2713'.ToString());
                        }
                        if (bookmarkName == "【quxiao6】" || bookmarkName == "【quxiao7】" || bookmarkName == "【quxiao8】")
                        {
                            builder.MoveToBookmark(bookmarkName);
                            builder.Write(safeDataList.endTime?.ToString("yyyy年MM月dd日 HH时mm分") ?? "");
                        }

                    }

                }
                #endregion

            }
            try
            {
                //doc.Save(outputFilePath);
                doc.Save(outputFilePath);


            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            return outputFilePath;
        }


        public void toImage(DocumentBuilder builder, byte[] imageBytes, string bookmarkName)
        {
            // 使用内存流加载图片字节  
            using (MemoryStream ms = new MemoryStream(imageBytes))
            {
                // 加载图片到Image对象（这里使用System.Drawing，但注意在Web应用程序中可能需要其他方法）  
                using (System.Drawing.Image image = System.Drawing.Image.FromStream(ms))
                {
                    ms.Position = 0;
                    // 移动到书签位置（假设bookmarkName是有效的书签名）  
                    builder.MoveToBookmark(bookmarkName);
                    // 转换像素尺寸为磅（假设屏幕DPI为96）  
                    double dpiX = 96; // 屏幕DPI的X轴值，通常为96  
                    double dpiY = 96; // 屏幕DPI的Y轴值，通常为96  
                    double widthInPoints = image.Width * 4 / dpiX; // 将像素转换为磅  
                    double heightInPoints = image.Height * 7 / dpiY; // 将像素转换为磅  

                    // 插入图片并指定其大小（以磅为单位）  
                    Shape inlineShape = builder.InsertImage(ms, (float)widthInPoints, (float)heightInPoints);

                }
            }
        }
        public void toImage1(DocumentBuilder builder, byte[] imageBytes, string bookmarkName)
        {
            // 使用内存流加载图片字节  
            using (MemoryStream ms = new MemoryStream(imageBytes))
            {
                // 加载图片到Image对象（这里使用System.Drawing，但注意在Web应用程序中可能需要其他方法）  
                using (System.Drawing.Image image = System.Drawing.Image.FromStream(ms))
                {
                    ms.Position = 0;
                    // 移动到书签位置（假设bookmarkName是有效的书签名）  
                    builder.MoveToBookmark(bookmarkName);
                    // 转换像素尺寸为磅（假设屏幕DPI为96）  
                    double dpiX = 96; // 屏幕DPI的X轴值，通常为96  
                    double dpiY = 96; // 屏幕DPI的Y轴值，通常为96  
                    double widthInPoints = image.Width * 4 / dpiX; // 将像素转换为磅  
                    double heightInPoints = image.Height * 4 / dpiY; // 将像素转换为磅  

                    // 插入图片并指定其大小（以磅为单位）  
                    Shape inlineShape = builder.InsertImage(ms, (float)widthInPoints, (float)heightInPoints);

                }
            }
        }

    }
}


